package com.mine.yyb.modules.sys.dao;

import java.util.List;

import com.mine.yyb.common.utils.exception.MineException;
import com.mine.yyb.common.utils.jdbc.MinePagination;
import com.mine.yyb.modules.sys.vo.UserVO;

/**
 * <pre>
 * <一句话功能简述>
 * 
 * 用户相关dao接口
 * 
 * <功能详细描述>
 * </pre>
 * 
 * @author xuganhua
 * @version [版本号, 2015年12月12日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface IUserDao
{
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 保存用户信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2015年12月12日]
     * @param userVO
     * @return
     * @see [类、类#方法、类#成员]
     */
    public int save(UserVO userVO)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 更新用户信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2015年12月12日]
     * @param userVO
     * @return
     * @see [类、类#方法、类#成员]
     */
    public int update(UserVO userVO)
        throws MineException;
    
    /**
     * <一句话功能简述>
     * 
     * 删除用户
     * 
     * <功能详细描述>
     * 
     * @param userVO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public int delete(UserVO userVO)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 更新用户的支付宝信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年1月19日]
     * @param userVO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public int updateUserPay(UserVO userVO)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 更新用户的QQ信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年5月6日]
     * @param userVO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public int updateUserQQ(UserVO userVO)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 查询指定的用户信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2015年12月13日]
     * @param userVO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public UserVO queryUser(UserVO userVO)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 分页查询所有的用户
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年1月4日]
     * @param userVO
     * @param sEcho
     * @param iDisplayStart
     * @param iDisplayLength
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<UserVO> queryUser(UserVO userVO, int sEcho, int iDisplayStart, int iDisplayLength)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 查询出所有有上下线用户关系的用户
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年3月12日]
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public List<UserVO> queryChildList(UserVO userVO)
        throws MineException;
}
